﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MLSharp.Classification
{
	/// <summary>
	/// Defines the contract that all creators 
	/// of <see cref="IClassifier"/> objects
	/// should implement.
	/// </summary>
	public interface IClassifierFactory
	{
		/// <summary>
		/// Builds a classifier to predict the specified attribute using the 
		/// specified training data.
		/// </summary>
		/// <param name="trainingData">The training data.</param>
		/// <returns>A classifier.</returns>
		IClassifier BuildClassifier(IDataSet trainingData);

		/// <summary>
		/// The options object for the factory.
		/// </summary>
		/// <remarks>
		/// Implementors should implement this property explicitly and expose 
		/// a strongly-typed options object instead.  
		/// </remarks>
		object Options { get; }
	}
}
